package util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
    // 日期格式：yyyy-MM-dd
    public static final String PATTERN_DATE = "yyyy-MM-dd";
    // 日期时间格式：yyyy-MM-dd HH:mm:ss
    public static final String PATTERN_DATETIME = "yyyy-MM-dd HH:mm:ss";

    /**
     * 字符串转Date（日期+时间）
     */
    public static Date parseDateTime(String dateStr) {
        return parse(dateStr, PATTERN_DATETIME);
    }

    /**
     * 字符串转Date（仅日期）
     */
    public static Date parseDate(String dateStr) {
        return parse(dateStr, PATTERN_DATE);
    }

    /**
     * Date转字符串（日期+时间）
     */
    public static String formatDateTime(Date date) {
        return format(date, PATTERN_DATETIME);
    }

    /**
     * Date转字符串（仅日期）
     */
    public static String formatDate(Date date) {
        return format(date, PATTERN_DATE);
    }

    // 通用解析方法
    private static Date parse(String dateStr, String pattern) {
        if (dateStr == null || dateStr.trim().isEmpty()) {
            return null;
        }
        DateFormat df = new SimpleDateFormat(pattern);
        try {
            return df.parse(dateStr);
        } catch (ParseException e) {
            throw new RuntimeException("日期解析失败，期望格式：" + pattern, e);
        }
    }

    // 通用格式化方法
    private static String format(Date date, String pattern) {
        if (date == null) {
            return null;
        }
        DateFormat df = new SimpleDateFormat(pattern);
        return df.format(date);
    }
}
